iT邦幫忙

2023 iThome 鐵人賽

DAY 12
0
Odoo

Odoo16 入門介紹系列 第 12

Day12_odoo_Many2many

  • 分享至 

  • xImage
  •  

Many2many

多對多欄位,書有很多本,但作者不只有一個。

class BookName(models.Model):
    _name = 'book.name'
    _description = "book's name model"
    
    name = fields.Char(string='Name', required=True)
    author = fields.Many2many('author', 'author_book_name_tag', 
                         'book_name', 'author_name',string='Author')

在使用Many2many欄位時,odoo會在DB中生成一個新Table,用來記錄book_nameauthor_name的關聯,在上面所舉的例子中,會發現多對多欄位有好幾個屬性,分別是author(關聯的Model)、author_book_name_tag(我們自訂的Table名稱)、booke_id(BookName所對應的欄位)、author(Author所對應的欄位),在這當中如果我們沒有設定Tabel名與對應的欄位,odoo也會自動生成Table的名稱就會是BookName_author_rel、欄位則是book_idauthor_id

Many2many的parameter:

comodel_name(必填):這是與當前模型建立多對多關係的目標模型的名稱,它是一個字符串,例如
表示當前模型的記錄可以與 author模型的記錄建立多對多關聯。

relation:這是用於存儲多對多關係的中間表的名稱。如果不指定,Odoo將自動生成一個中間表。通常情況下,您不
需要指定這個參數。

string:這是字段的可選標籤,通常是一個人類可讀的字符串,用於界面上顯示字段的標籤。

required:一個布爾值,指定字段是否為必填字段。如果設置為True,用戶必須為這個字段提供值。

readonly:一個布爾值,指定字段是否為只讀字段。如果設置為True,則該字段將只能查看,不能編輯。

ondelete:指定當目標記錄被刪除時,如何處理關聯的記錄。常見的值包括 set null(將關聯字段設置為空)和 cascade(刪除關聯的記錄)。

domain:一個選擇器函數或域列表,用於篩選可選擇的目標記錄。

context:一個字典,用於設置與這個字段相關的上下文,可以在計算字段值時使用。

help:一個字符串,用於提供有關字段用途的說明。

index:一個布爾值,指定是否在該字段上建立數據庫索引。通常在大型數據集上查詢這個字段時使用。

limit:一個整數,限制可選擇的目標記錄的數量。如果設置了限制,用戶將無法選擇超過限制數量的目標記錄。

使用Many2many欄位,常用到的程度其實跟Many2one差不多,不過使用上還是需要依照情境去選擇的。


上一篇
Day11_odoo_Many2one
下一篇
Day13_odoo_One2many
系列文
Odoo16 入門介紹30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言